﻿
using System.Diagnostics;

namespace MyTest
{
    /// <summary>
    /// Product 的摘要说明
    /// </summary>
    public abstract class Product
    {
        //字段
        protected string name;//产品名称
        protected decimal price;//产品价格

        //封装之后变为属性
        public string Name 
        {
            get { return name; }
            set { name = value; }
        }
        public decimal Price 
        {
            get { return price; }
            set { price = value; }
        }

        //无参构造方法
        public Product():this("")
        {
            Debug.WriteLine("-=调用Product无参的构造方法=-");
        }

        //带参构造方法
        public Product(string name)
        {
            this.name = name;
            Debug.WriteLine("-=调用Product带参的构造方法=-");
        }

        /// <summary>
        /// 显示产品基本信息
        /// </summary>
        /// <returns></returns>
        /// virtual可以被继承重写的
        public virtual string Show()
        {
            return "产品名称: " + this.name + "产品价格: " + this.price;
        }

        /// <summary>
        /// 显示产品详细信息
        /// </summary>
        /// <returns></returns>
        public abstract string ShowDetail();

        //析构函数
        ~Product()
        {
            Debug.WriteLine("-=调用Product析构方法=-");
        }

    }
}
